package cc.admin.modules.sys.service;

import cc.admin.modules.sys.entity.SysOrg;
import cc.admin.modules.sys.model.OrgIdModel;
import cc.admin.modules.sys.model.SysOrgTreeModel;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface ISysOrgService extends IService<SysOrg>{

    /**
     * 查询所有机构信息,并分节点进行显示
     * @return
     */
    List<SysOrgTreeModel> queryTreeList();

    /**
     * 查询所有机构OrgId信息,并分节点进行显示
     * @return
     */
    public List<OrgIdModel> queryOrgIdTreeList();

    /**
     * 保存机构数据
     * @param sysOrg
     */
    void saveOrgData(SysOrg sysOrg,String username);

    /**
     * 更新depart数据
     * @param sysOrg
     * @return
     */
    Boolean updateOrgDataById(SysOrg sysOrg,String username);

    /**
     * 根据机构id删除并删除其可能存在的子级机构
     * @param id
     * @return
     */
    boolean delete(String id);

	 /**
     * 根据机构id批量删除并删除其可能存在的子级机构
     * @param ids
     * @return
     */
	void deleteBatchWithChildren(List<String> ids);

    /**
     *  根据机构Id查询,当前和下级所有机构IDS
     * @param id
     * @return
     */
    List<String> getSubIdsById(String id);

    /**
     * 获取我的机构下级所有机构IDS
     * @return
     */
    List<String> getMySubIdsById(String id);

    List<Map<String, String>> getMyAll();

    List<Map<String, String>> getOrgCodeName();
}
